﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ConverNumToString;

namespace _201206QuanLyBanHang.ChucNang

{
    public partial class FormXetdautu : Form
    {
       static int makh;
        int makv;

        public int Makv
        {
            get { return makv; }
            set { makv = value; }
        }
        public int Makh
        {
            get { return makh; }
            set { makh = value; }
        }
        int madautu;
        DateTime ngaydautu;
        DateTime thoihandautu;
        double tongdautu;
        string ghichu;
        int soluongdt;
        double dongiadt;
        int sodong = 0;
        int trangthai = 1;
        
        double giatridautu;
        int stt;

       
        ConvertNumToStr objConvert = new ConvertNumToStr();
        //khai bao ket noi
        // viet câu lệnh để biết được khác hàng đã được đầu tư bao nhiêu
        private string sqlStr = "select b.makh,b.madautu,a.tenkh, a.tencuahang,c.tendautu,b.ngaydt,b.THOIHAN_DAUTU_SP,b.tongdautu,b.ghichu_khdt from khachhang a, kh_duoc_dt b, dautu c where a.makh=b.makh and b.madautu=c.madautu";
        private BLL_Xetdautu db = new BLL_Xetdautu();
        private DataSet ds = new DataSet();
        private DataSet ds1 = new DataSet();
        public FormXetdautu()
        {
            InitializeComponent();
            this.dongcontrol(false,true);
            db.fillCombo("select makhuvuc,tenkhuvuc from khuvuc", cbkhuvuc, "tenkhuvuc", "makhuvuc");
            cbkhuvuc.SelectedIndex = -1;
            cbkhuvuc.Text = "--Chọn khu vực--";
          
            db.fillCombo("select madautu,tendautu from dautu", cbdautu, "tendautu", "madautu");
              this.cbdautu.SelectedIndex = -1;
            this.cbdautu.Text = "--Chọn loại đầu tư--";
            databind(sqlStr);
            this.Dgdanhmucdautu.ReadOnly=true;
        }

        private void cbkhuvuc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbkhuvuc.SelectedIndex != -1)
            {
                string sql = "select a.makh,tenkh,tencuahang,b.madautu from khachhang a left join kh_duoc_dt b on a.makh=b.makh  where makhuvuc=" + this.cbkhuvuc.SelectedValue.ToString() +"and a.tinhtrangkh=1";
                loadkhachhang(sql);
                string sql1 = "select b.makh,b.madautu,a.tenkh, a.tencuahang,c.tendautu,b.ngaydt,b.tongdautu,b.ghichu_khdt, a.makhuvuc from khachhang a, kh_duoc_dt b, dautu c where a.makh=b.makh and b.madautu=c.madautu and makhuvuc=" + this.cbkhuvuc.SelectedValue.ToString()+"and a.tinhtrangkh=1";
                databind(sql1);
                //hàm clear
                string sqltong = "select SUM(tongdautu),a.makhuvuc from KH_duoc_dt b,khachhang a where a.makh=b.makh and a.makhuvuc=" + this.cbkhuvuc.SelectedValue.ToString() + " group by a.makhuvuc";
                this.lbtongtien.Text = "Tổng số tiền đầu tư  cho khu vực "+ cbkhuvuc.Text + " là :";
                this.lbtongtien.Text = lbtongtien.Text + string.Format("{0:0,0.00}", tongtien(sqltong)) + " đồng";
                this.lbchutong.Text = "Bằng chữ: " + objConvert.converNumToString(objConvert.slipArray(Convert.ToString(tongtien(sqltong)))) + " đồng";
                this.clear();
                dongcontrol(false, true);
                button1.Visible = true;
                               
            }
        }
        private void loadkhachhang(string sql)
        {
            //ds.Clear();
            ds = db.getdautu(sql);
            this.dgkhachhang.DataSource = ds.Tables[0];
            
            dgkhachhang.Columns[0].HeaderText = "Mã số";
            dgkhachhang.Columns[0].Visible =false;

            dgkhachhang.Columns[1].HeaderText = "Tên KH";
            dgkhachhang.Columns[1].Visible = false;

           dgkhachhang.Columns[2].HeaderText = "Cửa hàng";

            dgkhachhang.Columns[3].HeaderText = "madautu";
            dgkhachhang.Columns[3].Visible = false;



            dgkhachhang.AllowUserToAddRows = false;

            this.dgkhachhang.AutoResizeColumns(
              DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            this.dgkhachhang.ReadOnly = false;
            dgkhachhang.AllowUserToAddRows = false;
            sodong = 0;
            sodong = ds.Tables[0].Rows.Count;
            this.lbtong.Text = "Số lượng khách hàng: ";
            this.lbtong.Text = lbtong.Text + sodong;
        }
        
        private void dgkhachhang_Click(object sender, EventArgs e)
        {
            this.dongcontrol(true,false);
            this.txtma.Text = this.dgkhachhang[dgkhachhang.Columns[0].Index, dgkhachhang.CurrentRow.Index].Value.ToString();
            this.txttenkh.Text = dgkhachhang[dgkhachhang.Columns[1].Index, dgkhachhang.CurrentRow.Index].Value.ToString();
            this.txtcuahoang.Text = dgkhachhang[dgkhachhang.Columns[2].Index, dgkhachhang.CurrentRow.Index].Value.ToString();
            
            this.txttong.Text = "";
            this.datedautu.ResetText();
            this.BtnXoa.Enabled = true;
            this.Btnluu.Enabled = true;
            if (dgkhachhang[dgkhachhang.Columns[3].Index, dgkhachhang.CurrentRow.Index].Value.ToString() == "")
            {
                this.cbdautu.SelectedIndex = -1;
                this.cbdautu.Text = "--Chọn loại đầu tư--";
            }
            else
                cbdautu.SelectedValue = dgkhachhang[dgkhachhang.Columns[3].Index, dgkhachhang.CurrentRow.Index].Value.ToString();
            //cho load du lieu theo ma khac hàng
            string makh1 = "";
            
                makh1 = dgkhachhang[dgkhachhang.Columns[0].Index, dgkhachhang.CurrentRow.Index].Value.ToString();
                string sql1 = "select b.makh,b.madautu,a.tenkh, a.tencuahang,c.tendautu,b.ngaydt,b.THOIHAN_DAUTU_SP,b.tongdautu,b.ghichu_khdt from khachhang a, kh_duoc_dt b, dautu c where a.makh=b.makh and b.madautu=c.madautu and b.makh=" + makh1;
                databind(sql1);
            //tính tổng số tiền đầu tu

            string sqltong="select SUM(tongdautu) from KH_duoc_dt where MAKH="+ makh1;
            this.lbtongtien.Text = "Tổng số tiền đầu tư cho khách hàng " + this.txtcuahoang.Text + " là: ";
            this.lbtongtien.Text = lbtongtien.Text + string.Format("{0:0,0.00}", tongtien(sqltong)) + " đồng"; 
            this.lbchutong.Text = "Bằng chữ: "+ objConvert.converNumToString(objConvert.slipArray(Convert.ToString(tongtien(sqltong)))) +" đồng";
            
        }
        private double tongtien(string sql)
        {
            double tong = 0;
            string err = "";
            tong = db.laytongtien(err, sql);
            return tong;
        }
        private void cbdautu_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.cbdautu.SelectedIndex != -1)
            {
                string sql = "select madanhmuc,tendanhmuc from danhmucdautu where madautu=" + this.cbdautu.SelectedValue.ToString();
                loaddanhmuc(sql);
                Btnluu.Enabled = true;
                BtnXoa.Enabled = true;
            }
            else
            {
                this.Dgdanhmucdautu.DataSource = null;
                Btnluu.Enabled = false;
                BtnXoa.Enabled = false;
            }
        }
        private void loaddanhmuc(string sql)
        {
            int sodong1 = 0;
            //ds.Clear();
            ds = db.getdautu(sql);
            this.Dgdanhmucdautu.DataSource = ds.Tables[0];
            this.Dgdanhmucdautu.Columns[0].HeaderText = "Mã số";
            Dgdanhmucdautu.Columns[0].Visible = true;
            Dgdanhmucdautu.Columns[1].HeaderText = "Danh mục";
            
            Dgdanhmucdautu.AllowUserToAddRows = false;

            this.Dgdanhmucdautu.AutoResizeColumns(
              DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            this.Dgdanhmucdautu.ReadOnly = true;
            Dgdanhmucdautu.AllowUserToAddRows = false;
            sodong1 = 0;
            sodong1 = ds.Tables[0].Rows.Count;
            this.lbtongdanhmuc.Text = "Số lượng danh mục: ";
            this.lbtongdanhmuc.Text = lbtongdanhmuc.Text + sodong1;
        }
        private void luu()
        {
            makh = int.Parse(this.txtma.Text);
            if (cbdautu.SelectedIndex == -1)
            {
                MessageBox.Show("Mã đầu tư chưa chọn");
            }
            else
            {
                madautu = int.Parse(this.cbdautu.SelectedValue.ToString());
            }
            tongdautu = double.Parse(txttong.Text);
            ghichu = this.txtghichu.Text;
            ngaydautu = Convert.ToDateTime(this.datedautu.Value.ToShortDateString());
            thoihandautu = Convert.ToDateTime(this.dateTime_ThoiHanDT.Value.ToShortDateString());
            string err = "";
            if (!db.insertxetdautu(ref err, madautu, makh, ngaydautu, tongdautu, ghichu, soluongdt, dongiadt, thoihandautu,trangthai))
            {
                MessageBox.Show(err.ToString());
            }
            //thêm dữ liệu vào trong bảng đầu tư_giá trị
            //stt,makh,giatridautu,ngayhethan,ghichu
            //====
            stt = laystt();
            double songay = (thoihandautu - ngaydautu).TotalDays;
            giatridautu = tongdautu / lamtron(songay);
            //Thêm số tháng vào ghi chú đó mà
            if (!db.insertdautu_giatri(ref err,stt, makh, madautu, giatridautu, thoihandautu, Convert.ToString(lamtron(songay))+"__" + ghichu))
            {
                MessageBox.Show(err.ToString());
            }
            //====
            databind(sqlStr);
            //
        }
        private void databind(string sql)
        {
          
            ds = db.getdautu(sql);
            this.dgdautu.DataSource = ds.Tables[0];
            dgdautu.Columns[0].HeaderText = "Makh";
            dgdautu.Columns[0].Visible = false;
            dgdautu.Columns[1].HeaderText = "madt";
            dgdautu.Columns[1].Visible = false;
            dgdautu.Columns[2].HeaderText = "Tên KH";
            dgdautu.Columns[2].Visible = false;

            dgdautu.Columns[3].HeaderText = "Tên CH";
            dgdautu.Columns[3].Visible = true;

            dgdautu.Columns[4].HeaderText = "Tên ĐT";
            dgdautu.Columns[5].HeaderText = "Ngày tháng";
            dgdautu.Columns[6].HeaderText = "Ngày hết hạn";
            dgdautu.Columns[7].HeaderText = "Tổng tiền";
            dgdautu.Columns[8].HeaderText = "Ghi chú";

            dgdautu.Columns[7].DefaultCellStyle.Format = "#,###";
            dgdautu.Columns[5].DefaultCellStyle.Format= "dd/MM/yyyy";
            dgdautu.Columns[6].DefaultCellStyle.Format= "dd/MM/yyyy";
            dgdautu.Columns[7].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            if (ds.Tables[0].Columns.Count == 9)
            {
                dgdautu.Columns[8].Visible=false;
            }
           
            dgdautu.AllowUserToAddRows = false;

            this.dgdautu.AutoResizeColumns(
              DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);
            this.dgdautu.ReadOnly = false;
            dgdautu.AllowUserToAddRows = false;
            int dong = 0;
            dong = ds.Tables[0].Rows.Count;
            this.grdautu.Text = "Số lượng khách hàng được đầu tư: ";
            this.grdautu.Text = grdautu.Text + dong;

            string sqltongtien = "select SUM(tongdautu) from KH_duoc_dt";
            this.lbtongtien.Text = "Tổng số tiền đã đầu tư: ";

            this.lbtongtien.Text = lbtongtien.Text + string.Format("{0:0,0.00}", tongtien(sqltongtien)) + " đồng";
            this.lbchutong.Text = "Bằng chữ: " + objConvert.converNumToString(objConvert.slipArray(Convert.ToString(tongtien(sqltongtien)))) + " đồng";
        }
        private void bindulieu()
        {
            try
            {
                this.txtma.Text = dgdautu[dgdautu.Columns[0].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.cbdautu.SelectedValue = dgdautu[dgdautu.Columns[1].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.txttenkh.Text = dgdautu[dgdautu.Columns[2].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.txtcuahoang.Text = dgdautu[dgdautu.Columns[3].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.datedautu.Text = dgdautu[dgdautu.Columns[5].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.dateTime_ThoiHanDT.Text = dgdautu[dgdautu.Columns[6].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.txttong.Text = dgdautu[dgdautu.Columns[7].Index, dgdautu.CurrentRow.Index].Value.ToString();
                this.txtghichu.Text = dgdautu[dgdautu.Columns[8].Index, dgdautu.CurrentRow.Index].Value.ToString();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            
        }
        public int laystt()
        {
            int stt = 1;

            string sqlstring = "select max(STT_DTGT) from DAUTU_GIATRI";
            string err = "";
            object kq = db.layma(ref err, sqlstring);
            if (kq != System.DBNull.Value)
                stt = Convert.ToInt32(kq) + 1;
            return stt;
        }
       /// <summary>
       /// hàm này không cần dùng nữa
       /// </summary>
        private void DMSua()
        {
            string err = "";
            makh = int.Parse(this.txtma.Text);
            madautu = int.Parse(this.cbdautu.SelectedValue.ToString());
            tongdautu = double.Parse(txttong.Text);
            ghichu = this.txtghichu.Text;
            ngaydautu = Convert.ToDateTime(this.datedautu.Value.ToShortDateString());
            thoihandautu = Convert.ToDateTime(this.dateTime_ThoiHanDT.Value.ToShortDateString());
            if (!db.updateXetdautu(ref err, madautu, makh, ngaydautu, tongdautu, ghichu, soluongdt, dongiadt, thoihandautu, trangthai))
            {
                MessageBox.Show(err.ToString());
            }
            databind(sqlStr);
            ///
           // stt = laystt();
            double songay = ( thoihandautu-ngaydautu).TotalDays;
            giatridautu = tongdautu / lamtron(songay);

            if (!db.update_dautu_giatri(ref err,makh, giatridautu, thoihandautu,Convert.ToString(lamtron(songay))+"_"+ ghichu))
            {
                MessageBox.Show(err.ToString());
            }
        }

        private void Btnluu_Click(object sender, EventArgs e)
        {
            this.Btnluu.Enabled = false;
            this.BtnXoa.Enabled = false;
            if (datedautu.Value > dateTime_ThoiHanDT.Value)
            {
                MessageBox.Show("Hạn đầu tư phải lớn hơn ngày xét đầu tư");
                dateTime_ThoiHanDT.Focus();
            }
            else
            {
                    luu();
                    clear();
                    MessageBox.Show("Lưu thành công");
               
            }
           
        }
        private void clear()
        {
            this.txtma.Text = "";
            this.txtcuahoang.Text = "";
            this.txtghichu.Text = "";
            this.txttenkh.Text = "";
            this.txttong.Text = "";
            this.cbdautu.SelectedIndex = -1;
            this.cbdautu.Text = "chọn đầu tư";
            this.txtsoluong.Text = "";
            this.txtdongia.Text = "";
        }
        private void dgdautu_Click(object sender, EventArgs e)
        {
            this.bindulieu();
            //flat = true;
            this.Btnluu.Enabled = true;
            this.BtnXoa.Enabled = true;
            dongcontrol(true, false);
        }

        private void BtnXoa_Click(object sender, EventArgs e)
        {
            try
            {
                makh = int.Parse(this.txtma.Text);
                madautu = int.Parse(this.cbdautu.SelectedValue.ToString());
            }
            catch
            {
                MessageBox.Show("Chọn khu vực để xóa");
                return;
            }

            DialogResult result;
            result = MessageBox.Show("Bạn có muốn xóa không", "Xóa dữ liệu trong danh mục khu vực", MessageBoxButtons.YesNo);
            if (result == DialogResult.Yes)
            {
                string err = "Dữ liệu không thể xóa";
                if (!db.deletexetdautu(ref err,madautu,makh))
                    MessageBox.Show(err);
                else
                    MessageBox.Show("Đã xóa thành công");
            }
            databind(sqlStr);
        }

        private void textBoxX1_KeyUp(object sender, KeyEventArgs e)
        {
            this.dgkhachhang.DataSource = db.LayThongtinTimkiem(this.cbkhuvuc.SelectedValue.ToString(),this.txttim.Text);

        }

        private void txttong_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Back)
            {
                //Ko làm gì cả chỉ mặc định là xóa
            }
            else
            {
                txttong.Text = txttong.Text.Replace(",", "");
                int cd = txttong.TextLength;
                if (cd > 3 && cd <= 6)
                {
                    txttong.Text = txttong.Text.Insert(cd - 3, ",");
                }
                if (cd > 6 && cd <= 9)
                {
                    txttong.Text = txttong.Text.Insert(cd - 3, ",");
                    txttong.Text = txttong.Text.Insert(cd - 6, ",");
                }
                if (cd > 9 && cd <= 12)
                {
                    txttong.Text = txttong.Text.Insert(cd - 3, ",");
                    txttong.Text = txttong.Text.Insert(cd - 6, ",");
                    txttong.Text = txttong.Text.Insert(cd - 9, ",");
                }
                txttong.SelectionStart = txttong.TextLength;
            }
        }
        private void dongcontrol(bool t,bool f)
        {
            this.txttong.Enabled = t;
            this.txttenkh.Enabled = t;
            this.txtcuahoang.Enabled = t;
            this.txtghichu.Enabled = t;
            this.txtma.Enabled = t;
            this.txttenkh.Enabled = t;
            txtsoluong.Enabled = t;
            txtdongia.Enabled = t;
            this.cbdautu.Enabled = t;
            this.datedautu.Enabled = t;
            this.dgdautu.ReadOnly = f;
        }

        private void txttong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            makv = int.Parse(this.cbkhuvuc.SelectedValue.ToString());
           
            string tenkv = cbkhuvuc.Text;
           
            danhsachkhachhangduatutheokhuvuc dsach = new danhsachkhachhangduatutheokhuvuc();
            dsach.tenkv = tenkv;
            dsach.makv = makv;
            dsach.ShowDialog();
        }

        private void txtdongia_TextChanged(object sender, EventArgs e)
        {

            if (txtsoluong.Text != "" && txtdongia.Text != "")
            {
                double tong = 0;
                int sl = int.Parse(txtsoluong.Text);
                int dg = int.Parse(txtdongia.Text);
                soluongdt = sl;
                dongiadt = dg;
                tong = sl * dg;
                txttong.Text = tong.ToString();
                lbltong.Text = objConvert.converNumToString(objConvert.slipArray(Convert.ToString(txttong.Text))) + " đồng";
                txtghichu.Text = lbltong.Text;
            }
            else
            {
                lbltong.Text = "";
                txttong.Text = "";
                txtghichu.Text = "";
            }
            
            
        }

        private void txtsoluong_TextChanged(object sender, EventArgs e)
        {
            if (txtdongia.Text != "" && txtsoluong.Text!="")
            {
                double tong = 0;
                int sl = int.Parse(txtsoluong.Text);
                int dg = int.Parse(txtdongia.Text);
                tong = sl * dg;
                txttong.Text = tong.ToString();
                lbltong.Text = objConvert.converNumToString(objConvert.slipArray(Convert.ToString(txttong.Text))) + " đồng";
                txtghichu.Text = lbltong.Text;
            }

        }
        private int lamtron(double songay)
        {
            int kq = 0;
            if (songay % 30 >= 6)
                kq = (int) songay / 30 + 1;
            else 
                kq= (int) songay/30;
            return kq;
        }
      
    }
}

